# !usr/bin/env python
# -*- coding:utf-8 _*-
"""
@Author:张广勤
@Web site: https://www.tunan.wang
@Github:www.github.com
 
@File:docx_rename1_0.py
@Time:2024/9/2 20:08

@Motto:不积跬步无以至千里，不积小流无以成江海！
"""
import os
import re
from shutil import copy2


def chinese_year_to_arabic(year_str):
    # 映射中文数字到阿拉伯数字
    chinese_digit_map = {
        '〇': '0', '零': '0', '○': '0',
        '一': '1', '二': '2', '两': '2', '三': '3', '四': '4', '五': '5',
        '六': '6', '七': '7', '八': '8', '九': '9', '十': '10'
    }

    # 将中文年份字符串转换为阿拉伯数字
    try:
        # 替换中文数字为阿拉伯数字
        arabic_str = ''
        for char in year_str:
            if char in chinese_digit_map:
                arabic_str += chinese_digit_map[char]
            elif char == '十':
                # 如果遇到“十”，则将前一个数字乘以10
                if arabic_str and arabic_str[-1].isdigit():
                    arabic_str = arabic_str[:-1] + str(int(arabic_str[-1]) * 10)
                else:
                    arabic_str += '10'  # 特殊处理“十”本身的情况

        # 将结果字符串转换为整数
        return str(int(arabic_str))
    except Exception as e:
        print(f"Error converting year {year_str}: {e}")
        return year_str


def rename_and_copy_docx_files(source_dir, target_dir):
    # 确保目标文件夹存在
    if not os.path.exists(target_dir):
        os.makedirs(target_dir)

    # 遍历源文件夹下的所有文件
    for filename in os.listdir(source_dir):
        if filename.endswith('.docx'):
            # 构造完整路径
            old_path = os.path.join(source_dir, filename)

            # 去除“国家统计局关于”字样
            # 假设文件名总是以“国家统计局关于”开头
            new_filename = filename.replace("国家统计局关于", "")

            # 查找并替换年份
            # 假设年份是文件名的一部分，且格式固定（例如“报告二零二三年.docx”）
            year_pattern = re.compile(r"(一九|二零)[\d○一二三四五六七八九十]{2,3}年")
            match = year_pattern.search(new_filename)
            if match:
                year_str = match.group(0)
                arabic_year = chinese_year_to_arabic(year_str)
                new_filename = new_filename.replace(year_str, arabic_year)

            # 构造新路径
            new_path = os.path.join(target_dir, new_filename)

            # 复制文件
            copy2(old_path, new_path)
            print(f"Copied: {old_path} -> {new_path}")


# 使用示例
source_folder = '全国统计公报_1/'
target_folder = '全国统计公报_new'
rename_and_copy_docx_files(source_folder, target_folder)